package com.whfc.emp.service;

import com.whfc.common.exception.BizException;
import com.whfc.common.result.ListData;
import com.whfc.common.result.PageData;
import com.whfc.emp.dto.AppFaceGateRecordDTO;
import com.whfc.emp.dto.AppFenceDTO;
import com.whfc.emp.dto.AppFenceEmpDTO;
import com.whfc.emp.entity.AppFence;
import com.whfc.emp.entity.AppFenceEmp;
import com.whfc.emp.param.*;
import com.whfc.entity.dto.Apply.rep.RegionRep;
import com.whfc.fuum.dto.SysWorkAreaDTO;

import java.util.List;


/**
 * @ClasssName AppFenceService
 * @Description 智能安全帽-电子围栏
 * @Author hw
 * @Date 2020/12/24 15:50
 * @Version 1.0
 */
public interface AppFenceService {

    /**
     * 人员管理-电子围栏列表
     *
     * @param request
     * @return
     */
    List<AppFenceDTO> list(AppFenceListParam request)throws BizException;

    /**
     * 人员管理-添加电子围栏
     *
     * @param request
     * @return
     */
    Integer add(AppFenceAddParam request)throws BizException;

    /**
     * 人员管理-删除电子围栏
     *
     * @param id
     */
    void del(Integer id)throws BizException;

    /**
     * 电子围栏考勤人员列表
     *
     * @param fenceId
     * @param pageNum
     * @param pageSize
     * @param groupId
     * @param workTypeId
     * @param keyword
     * @return
     */
    PageData<AppFenceEmpDTO> empList(Integer fenceId, Integer pageNum, Integer pageSize, Integer groupId, Integer workTypeId, String keyword)throws BizException;

    /**
     * 电子围栏添加人员
     *
     * @param request
     */
    void addEmp(AppFenceEmpAddParam request)throws BizException;

    /**
     * 删除考勤人员
     *
     * @param request
     */
    void delEmp(AppFenceEmpDelParam request)throws BizException;

    /**
     * 根据人员id查询所在的电子围栏列表
     *
     * @param empId
     * @return
     */
    List<AppFenceDTO> listByEmpId(Integer empId)throws BizException;

    /**
     * 电子围栏考勤未授权人员列表
     *
     * @param deptId
     * @param fenceId
     * @param pageNum
     * @param pageSize
     * @param groupId
     * @param keyword
     * @return
     */
    PageData<AppFenceEmpDTO> unGrantList(Integer deptId, Integer fenceId, Integer pageNum, Integer pageSize, Integer groupId, String keyword)throws BizException;

    List<AppFenceDTO> listByMsAppFence(Integer id);

    AppFence listByMsAppFenceName(Integer id);

    List<RegionRep> getWorkArea(Integer deptId);

    List<AppFenceDTO> areaList(Integer deptId);

    /**
     * 根据视频监控设备ID查询电子围栏列表
     *
     * @param fvsDeviceId 视频监控设备ID
     * @return 电子围栏列表
     */
    List<AppFenceDTO> listByFvsDeviceId(Integer fvsDeviceId) throws BizException;
}
